\chapter{Эмуляция}
\pagenumbering{arabic}

\section{Создание диска IMG для QEMU}
Создаём "жесткий диск" для установки Windows XP:

\begin{lstlisting}
$ qemu-img create mustdie.img 4096M
\end{lstlisting}

Это создаст образ winxp.img диска 4Гб для QEMU. Вставляем диск с Windows в CD-привод и пишем:

\begin{lstlisting}
$ qemu -m 512 -hda mustdie.img -cdrom /dev/cdrom -boot d -localtime
\end{lstlisting}

Это запустит эмулятор QEMU с 512Мб памяти, жёстким диском в виде файла mustdie.img и CD-приводом.



\section{USB в эмуляторе QEMU}
Запускаем QEMU с такими параметрами:
\begin{lstlisting}
$ qemu -usb -m 200 -hda mustdiexp.img -boot c -localtime
\end{lstlisting}

Обязательный параметр -usb. Включаем флешку, и сначала запускаем dmesg (скажет адрес устройства), а потом lsusb (выдаст идентификатор устройства).

\paragraph{Как узнать адрес устройства в Linux?} Спросим dmesg:

\vspace{2ex}usb 1-6: \textbf{new high speed USB device} using ehci\_hcd and \textbf{address 15}\\usb 1-6: configuration \#1 chosen from 1 choice\\scsi9 : SCSI emulation for USB Mass Storage devices\\\textbf{usb-storage: device found at 15}\\usb-storage: waiting for device to settle before scanning\\scsi 9:0:0:0: Direct-Access     JetFlash TS4GJFV35        8.07 PQ: 0 ANSI: 2\\sd 9:0:0:0: [sde] 7987200 512-byte hardware sectors (4089 MB)

\vspace{2ex}Полужирным я подсветил искомое - адрес нашего устройства \textbf{15}. Теперь интересуемся у
lsusb насчёт идентификатора устройства, и он нам всё выдаст:

\vspace{2ex}\textit{penta4@penta4rce:~\$} lsusb
\\Bus 005 Device 003: ID 046e:5500 Behavior Tech. Computer Corp.
\\Bus 003 Device 001: ID 0000:0000\\Bus 002 Device 001: ID 0000:0000\\\textbf{ Bus 001 Device 015: ID 058f:6387 Alcor Micro Corp.\\} Bus 001 Device 014: ID 04fc:0c15 Sunplus Technology Co., Ltd\\Bus 001 Device 001: ID 0000:0000

\vspace{2ex}Идентификатор устройства \textbf{15} есть \textbf{058f:6387  }. В QEMU заходим в гостевую систему,
нажимаем CTRL+ALT+2 и попадаем в консольный режим QEMU. Там мы пишем:
\begin{lstlisting}
$ usb_add host:058f:6387 
\end{lstlisting}

Если QEMU пишет, что не может добавить ваше устройство, а вы уверены, что всё сделано правильно - проверьте права на файл-устройство, оно должно быть с полными (777) правами. В консоли, откуда запущен QEMU, увидите:
\begin{lstlisting}
/proc/bus/usb/001/015: Permission denied
\end{lstlisting}

Стало быть, делаем так:
\begin{lstlisting}
# cd /proc/bus/usb
# chmod -R 777 001/
\end{lstlisting}

После этого устройство готово к работе.



\section{Монтирование диска QEMU}
Как получить доступ к файлам внутри "жёсткого диска" QEMU? Создаём точку монтирования, даём ей нужные права и прописываем в конфиге /etc/fstab:\par

\begin{lstlisting}
/opt/qemu/images/win2k.img /mnt/windows vfat rw,user,loop,noauto,offset=32256 0 0
\end{lstlisting}

Теперь можно монтировать и отмонтировать образ диска.

\section{Послать в QEMU сочетание клавиш}
Для переключения виртуальных консолей в гостевой Linux-системе следует переключиться в монитор и использовать команды вида:

\begin{lstlisting}
sendkey ctrl-alt-f2
\end{lstlisting}

Регистр важен: например, "sendkey ctrl-alt-delete" работает, а вот "sendkey CTRL-ALT-DELETE" не будет работать. Хотя в документации говорят, что должно работать оба варианта.
% % Лицензия на материалы этого текст
% 
% Материалы сайта "Записки дебианщика" написаны virens и доступны на условиях лицензии Creative Commons Attribution-Non-Commercial-Share Alike 3.0 Unported License. Вы можете копировать, распространять, показывать эту работу, и создавать производные работы в некоммерческих целях на условиях:
% 
% 1) обязательной ссылки на автора (virens, http://mydebianblog.blogspot.com/) и
% 
% 2) распространении любых производных работ на условиях этой же лицензии (ссылка на эту лицензию 
% обязательна!).
% 
% Пожалуйста соблюдайте условия лицензии.
% 
% This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. 

\section{Перегон образов QEMU в VirtualBox}
Всё для преобразования уже в комплекте VirtualBox.
\begin{lstlisting}
$ qemu-img convert -O raw test.img test.raw
$ VBoxManage convertdd test.raw test.vdi
$ VBoxManage modifyvdi /full/path/to/test.vdi compact
\end{lstlisting}

Обратная конвертация из VirtualBox в QEMU с помощью vditool для Linux, последовательность действий такова:
\begin{lstlisting}
$ vditool COPYDD vbox-image.vdi raw-image.img
$ qemu-img convert -f raw raw-image.img -O qcow2 qemu-image.qcow
\end{lstlisting}

В отличие от образов QEMU, примонтировать которые не составляет проблемы, образы VirtualBox примонтировать вовсе не так просто. 
